<template>
  <ul class="todo-main">
    <!-- 声明接受props数据，模板页面就可以直接使用 -->
    <!-- <Item
      v-for="todo in todoList"
      :key="todo.id"
      :todo="todo"
      @updateTodo="$emit('updateTodo', $event)"
    /> -->
    <!-- <Item
      v-for="todo in todoList"
      :key="todo.id"
      :todo="todo"
      @updateTodo="updateTodo"
    /> -->

    <!-- 
      $attrs 包含未声明接受的属性和自定义事件回调函数
        当前组件一共接受三个内容：:todoList="todoList" @updateTodo="updateTodo" @delTodo="delTodo"
        但是，todoList属性通过defineProps声明接受了。
        所以$attrs只包含两个自定义事件回调函数了
     -->
    <Item v-for="todo in todoList" :key="todo.id" :todo="todo" v-on="$attrs" />
  </ul>
</template>

<script lang="ts">
export default {
  name: "List",
};
</script>

<script setup lang="ts">
import Item from "./components/Item.vue";
import type { TodoList } from "../../types";

defineProps<{
  todoList: TodoList;
}>();

// const emit = defineEmits(["updateTodo"]);

// const updateTodo = (id: number) => {
//   emit("updateTodo", id);
// };
</script>

<style scoped>
/*main*/
.todo-main {
  margin-left: 0px;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0px;
}

.todo-empty {
  height: 40px;
  line-height: 40px;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding-left: 5px;
  margin-top: 10px;
}
</style>
